In devices which contain large amounts of memory there is a non-negligible chance that the contents of that memory will become corrupted over time, due to for example the impact of radiation (soft errors) or software bugs. In such devices where the operation of the device is fundamentally dependant on the contents of memory remaining constant and uncorrupted, for example where the memory contains the program code controlling the operation of an embedded processor, then such corruption can cause the operation of the device to fail.
There are many applications for such devices where high reliability is required, for example in communication systems, where it is desirable to either minimise the frequency of failures of this nature or to at least detect the failures and restart the device in an orderly fashion rather than silently failing in unpredictable ways.